#ifndef NUMERICUNARYOP_H
#define NUMERICUNARYOP_H
#include "numericExpression.h"
#include <string>

/*Class: NumericUnaryOperation
 *	A Class that represents a unary operation for Numeric Expressions as sign change
 *See Also: <NumericExpression> <Expression>
 */
class NumericUnaryOperation: public NumericExpression {

protected:
	 /* Variable Operand:
	  *	the operand of the expression
	  */
	 Expression * Operand;
	 /* Variable operatorRepresentation:
	  * 	String representation of the operator
	  */
	 std::string operatorRepresentation;
public:
	/*Constructor:NumericBinaryOperation
	 * Initialize the object with the specified parameters.
	 * Parameters:
	 * 	Expression - The numeric expression of the operation.
	 * 	operatorRep - The representation of the operator.
	 */
	NumericUnaryOperation(Expression * expression = NULL, std::string operatorRep = "");

	NumericUnaryOperation(const NumericUnaryOperation & other);

	virtual ~NumericUnaryOperation();

	virtual Expression * clone();

	std::string toString();

	Expression * getExpression();

	void setExpression(Expression * expression);

    void setOperator(const std::string & opRep);

	std::string getOperator();
};
#endif
